from argparse import ArgumentParser
import torch
import configparser
config = configparser.ConfigParser()
config.read('env_config.ini')
new_obs_dim = int(config.get('space', 'new_obs_dim'))


device = 'cuda' if torch.cuda.is_available() else 'cpu'
parser = ArgumentParser(description='Computing First Network')

parser.add_argument('--NumOfWorkers', type=int, default=5,
                    help='The number of workers')
parser.add_argument('--NumOfUsers', type=int, default=10,
                    help='The number of users')
parser.add_argument('--RamSeed', type=int, default=0,
                    help='Random seed')
parser.add_argument('--TaskInitID', type=int, default=0,
                    help='The init ID for tasks')
parser.add_argument('--totalStep', type=int, default=1e4,
                    help='step per eps')
parser.add_argument('--GenerateTaskSpeed', type=int, default=10,
                    help='The number of users')

parser.add_argument('--NodeStrategyCo', type=str, default='FIFO',
                    help='计算策略')
parser.add_argument('--NodeStrategyTr', type=str, default='FIFO',
                    help='传输策略')


parser.add_argument('--n_actions', type=int, default=5,
                    help='动作维度，The number of workers')


##dqn
parser.add_argument('--device', type=str, default=device,
                    help='gpu or cpu')
parser.add_argument('--algo_name', type=str, default='PPO',
                    help='gpu or cpu')
parser.add_argument('--env_name', type=str, default='Network_transfer_and_computing',
                    help='gpu or cpu')

parser.add_argument('--gamma', type=float, default=0.99,
                    help='折现因子')
parser.add_argument('--epsilon_start', type=float, default=0.95,
                    help='探索始')
parser.add_argument('--epsilon_end', type=float, default=0.01,
                    help='探索终')
parser.add_argument('--epsilon_decay', type=float, default=400000,
                    help='衰减率')
parser.add_argument('--batch_size', type=int, default=32,
                    help='批次量')
parser.add_argument('--n_states', type=int, default=new_obs_dim,
                    help='状态维度')
parser.add_argument('--hidden_dim', type=int, default=256,
                    help='隐层维度')
parser.add_argument('--lr', type=float, default=0.0003,
                    help='学习率')
parser.add_argument('--buffer_size', type=int, default=100000,
                    help='缓冲池')
parser.add_argument('--train_eps', type=int, default=200,
                    help='训练回合')
args = parser.parse_args()


def get_args():
    arguments = parser.parse_args()
    return arguments